<template>
  <a-card :bordered="false" class="card-area">
    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <!-- 搜索区域 -->
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :md="6" :sm="8">
            <a-form-item
              label="角色名称"
              :labelCol="{ span: 5 }"
              :wrapperCol="{ span: 18, offset: 1 }"
            >
              <a-input
                placeholder="请输入名称查询"
                v-model="queryParam.roleName"
                maxLength="30"
              ></a-input>
            </a-form-item>
          </a-col>
          <span
            style="float: left; overflow: hidden"
            class="table-page-search-submitButtons"
          >
            <a-col :md="6" :sm="24">
              <a-button type="primary" icon="search" @click="searchQuery"
                >查询</a-button
              >
              <a-button
                type="primary"
                icon="reload"
                style="margin-left: 8px"
                @click="searchReset"
                ghost="true"
                >重置</a-button
              >
            </a-col>
          </span>
        </a-row>
      </a-form>
    </div>

    <!-- 操作按钮区域 -->
    <div class="table-operator" style="border-top: 5px">
      <a-button @click="handleAdd" type="primary" icon="plus"
        >新增角色</a-button
      >

      <a-dropdown v-if="selectedRowKeys.length > 0">
        <a-menu slot="overlay">
          <a-menu-item key="1" @click="batchDel"
            ><a-icon type="delete" />删除</a-menu-item
          >
        </a-menu>
        <a-button style="margin-left: 8px">
          批量操作 <a-icon type="down" />
        </a-button>
      </a-dropdown>
    </div>

    <!-- table区域-begin -->
    <div>
      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px">
        <i class="anticon anticon-info-circle ant-alert-icon"></i>
        已选择&nbsp;<a style="font-weight: 600">{{ selectedRowKeys.length }}</a
        >项&nbsp;&nbsp;
        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
      </div>

      <a-table
        ref="table"
        size="middle"
        bordered
        rowKey="roleId"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="ipagination"
        :loading="loading"
        :rowSelection="{
          selectedRowKeys: selectedRowKeys,
          onChange: onSelectChange,
        }"
        @change="handleTableChange"
      >
        <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)" :class="record.roleCode == 'YSUF-FBK' ? 'valueColor' : ''">编辑</a>
          <a-divider type="vertical" />
          <a @click="handlePerssion(record.roleId)" :class="record.roleCode == 'YSUF-FBK' ? 'valueColor' : ''">授权</a>
          <a-divider type="vertical" />
          <a-popconfirm
            :title="showUserEnableMsg(record, 1)"
            @confirm="() => changeStatus(record)"
          >
            <a :class="record.roleCode == 'YSUF-FBK' ? 'valueColor' : ''">{{ showUserEnableMsg(record) }}</a>
          </a-popconfirm>
          <a-divider type="vertical" />
          <a-popconfirm
            title="确定删除吗?"
            @confirm="() => handleDelete(record.roleId)"
          >
            <a :class="record.roleCode == 'YSUF-FBK' ? 'valueColor' : ''">删除</a>
          </a-popconfirm>
        </span>
      </a-table>
    </div>
    <!-- table区域-end -->

    <!-- 表单区域 -->
    <role-modal ref="modalForm" @ok="modalFormOk"></role-modal>
    <user-role-modal ref="modalUserRole"></user-role-modal>
  </a-card>
</template>

<script>
import RoleModal from "./modules/RoleModal";
import UserRoleModal from "./modules/UserRoleModal";
import { JeecgListMixin } from "@/mixins/JeecgListMixin";
import JDate from "@/components/jeecg/JDate";
import { postAction } from "@/api/manage";

export default {
  name: "RoleList",
  mixins: [JeecgListMixin],
  components: {
    RoleModal,
    UserRoleModal,
    JDate,
  },
  data() {
    return {
      description: "角色管理页面",
      // 查询条件
      queryParam: { roleName: "" },
      // 表头
      columns: [
        {
          title: "#",
          dataIndex: "",
          key: "rowIndex",
          width: 80,
          align: "center",
          customRender: function (t, r, index) {
            return parseInt(index) + 1;
          },
        },
        {
          title: "角色名称",
          align: "center",
          dataIndex: "roleName",
          width: 220,
        },
        {
          title: "角色编码",
          align: "center",
          dataIndex: "roleCode",
          width: 220,
        },
        // {
        //   title: '角色机构',
        //   align:"center",
        //   dataIndex: 'orgName'
        // },
        {
          title: "备注",
          align: "center",
          dataIndex: "description",
          width: 260,
        },
        {
          title: "操作",
          dataIndex: "action",
          align: "center",
          scopedSlots: { customRender: "action" },
          // width:300,
        },
      ],
      url: {
        list: "/sys/role/page",
        delete: "/sys/role/delete",
        deleteBatch: "/sys/role/delete-batch",
        exportXlsUrl: "/sys/role/exportXls",
        importExcelUrl: "sys/role/importExcel",
        setStatus: "/sys/role/set-status",
      },
    };
  },
  computed: {
    importExcelUrl: function () {
      return `${window._CONFIG["domianURL"]}/${this.url.importExcelUrl}`;
    },
  },
  methods: {
    handlePerssion: function (roleId) {
      console.log(roleId);
      this.$refs.modalUserRole.show(roleId);
    },
    onChangeDate(date, dateString) {
      console.log(date, dateString);
    },
    showUserEnableMsg(record, type) {
      if (type === 1) {
        return record.status === 1 ? "确定禁用吗?" : "确定启用吗?";
      }
      return record.status === 1 ? "禁用" : "启用";
    },
    changeStatus(record) {
      console.log(record.roleId, record.status);
      let params = {};
      params.roleId = record.roleId;
      params.status = record.status == 0 ? 1 : 0;
      let that = this;
      postAction(this.url.setStatus, params).then((res) => {
        if (res.code == "00000") {
          that.$message.success("修改成功");
          that.loadData();
        } else {
          that.$message.warning("修改失败:" + res.msg);
        }
      });
    },
  },
};
</script>
<style scoped>
@import "~@assets/less/common.less" ;
.valueColor {
  pointer-events: none;
  cursor: default;
  color: gray;
}
</style>